package com.xiangge.demo;

/**
 * @author xiangge
 * @version 1.0
 * @date 2025/3/18 9:34
 * @description  成员变量和局部变量的区别
 *        成员位置：类中方法外
 *        局部位置： 方法内
 *
 *        -- 代码中的位置不同：
 *              成员变量： 在类中方法外
 *              局部变量： 方法内
 *
 *        -- 作用范围不同：
 *              成员变量： 在整个类中有效
 *              局部变量： 在方法中有效
 *
 *        -- 在内存中的位置不同：
 *              成员变量： 在堆中 , 一般在对象的空间中
 *              局部变量： 在栈中, 一般在方法的执行空间中
 *
 *        -- 默认值不同：
 *             成员变量： 有默认值
 *             局部变量： 不赋值，没有默认值，不能使用
 *
 *        -- 生命周期的不同：
 *               成员变量： 随着对象的创建而创建 , 随着对象的销毁而销毁
 *               局部变量： 随着方法的调用进栈而创建, 随着方法的弹栈而销毁
 *
 *        -- IDEA中颜色不一样：
 *               成员变量： 被使用紫色
 *               局部变量： 被使用白色
 *        辅助记忆：
 *            因为 在代码中的位置不同 , 导致作用范围不同
 *            因为 在内存中的位置不同 , 导致默认值不同 , 生命周期的不同
 *
 */
public class OOPDemo2 {
    public static void main(String[] args) {
        Cat tom = new Cat("tom", 4);
        System.out.println("tom.name = " + tom.name);
        tom.show();

     /*   int num;
        System.out.println("num = " + num);*/
    }
}
class Cat{
    // 属性 ： 成员变量
    public String name; // 出生
    public int age;
    // 构造方法
    public Cat(){

    }
    public Cat( String name , int age){
        this.name = name;
        this.age = age;
    }// 死亡

    public void show(){
        // int age = 10; // 局部变量
        System.out.println("姓名：" + name +", 年龄：" + age);
    }
}// 死亡
